/*
 * Copyright (c) 2014 laidian. All Rights Reserved.
 * @author yaoyuming
 * @date  2019-11-29 17:25
 */
package com.yao.util;

import cn.hutool.core.io.resource.FileResource;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.word.DocUtil;
import com.yao.constant.ParamConst;
import com.yao.core.Table;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * 代码生成器，
 *
 * @author yaoyuming
 * @date 2019/11/29 17:25
 */
public class GeneratorUtil {

    private static final String TEST_FILE = "D:\\personalgit\\Spring\\SpringBoot\\yym-fusion\\src\\main\\resources\\数据结构\\权限管理数据表结构.docx";

    public static void gen(String file) {
        String filePath = TEST_FILE;
        if (StrUtil.isNotBlank(file)) {
            filePath = file;
        }
        FileResource fileResource = new FileResource(filePath);
//        ClassPathResource classPathResource = new ClassPathResource("D:\\workspaces\\idea_\\code-generator-3\\src\\main\\resources\\权限管理数据表结构.docx");

        XWPFDocument doc = DocUtil.create(fileResource.getFile());

        List<Table> tables = WordUtil.create(doc);

        tables.stream().forEach(System.out::println);

        // 输出文件的路径
        String destFile = CustMapUtil.get(ParamConst.DEST_PATH);

        tables.stream().forEach(e -> {
            Map<String, String> map = CustMapUtil.get();
            String[] tableNameArr = e.getTableName().split("_");
            String module = Arrays.asList(tableNameArr).stream().skip(1).reduce("", (s1, s2) -> StrUtil.concat(true, StrUtil.lowerFirst(s1), StrUtil.lowerFirst(s2)));
            map.put("preTable", tableNameArr[0]);
            map.put("module", tableNameArr[0]);
            e.setMap(map);

            FreemarkerUtil.generateCode(e);
        });

        // 生成sql脚本
        SqlUtil.createSql("mysql_template.ftl", destFile + "temp/table.sql", tables);

    }

}